package com.millstein.tsinglog.service;

import com.millstein.tsinglog.model.dto.category.CategorySaveDTO;
import com.millstein.tsinglog.model.pojo.Category;
import com.millstein.tsinglog.model.vo.biz.CategoryVo;
import com.millstein.tsinglog.model.vo.result.PageResult;

import java.util.List;

public interface CategoryService {

    /**
     * 获取所有分类的信息
     * @return
     */
    List<Category> getAllCategory();

    /**
     * 分页条件查询分类信息
     * @param currentPage 当前页
     * @param pageSize 每页的数据量
     * @param keyword 搜索关键字
     * @return
     */
    PageResult<Category> getCategoryByPage(Integer currentPage, Integer pageSize, String keyword);

    /**
     * 新增分类
     * @param categorySaveDTO 新增分类信息封装的对象
     */
    void insertCategory(CategorySaveDTO categorySaveDTO);

    /**
     * 根据ids删除对应分类的信息（假删除）
     * @param ids 存放需删除分类的id的集合
     */
    void deleteByIds(List<Long> ids);

    /**
     * 设置指定分类的启用状态
     * @param id 该分类的id
     * @param usable 是否启用，1为启用，0为不启用
     */
    void changeUsable(Long id, Short usable);

    /**
     * 根据id查询分类信息
     * @param id 分类id
     * @return
     */
    Category getCategoryById(Long id);

    /**
     * 更新分类信息
     * @param categorySaveDTO 更新分类信息封装的实体
     */
    void updateCategory(CategorySaveDTO categorySaveDTO);

    /**
     * 为前端页面准备分类信息，要求usable=1和status=1
     * @return
     */
    List<CategoryVo> getAllCategoryForPortal();
}
